home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / lalr.lha / lalr / lib / Errors.mi < prev    next >
Text File  |  1992-08-18  |  4KB  |  118 lines

  1. (* $Id: Errors.mi,v 2.1 1992/08/07 15:28:42 grosch rel $ *)
  2.  
  3. IMPLEMENTATION MODULE Errors;
  4.  
  5. FROM SYSTEM    IMPORT ADDRESS;
  6. FROM IO        IMPORT tFile, StdError, WriteC, WriteNl, WriteS, WriteI,
  7.                WriteB, WriteR, CloseIO;
  8. FROM Sets    IMPORT tSet, IsElement, Size;
  9. FROM Idents    IMPORT tIdent, WriteIdent;
  10. FROM Positions    IMPORT tPosition, WritePosition;
  11.  
  12. IMPORT System, Strings;
  13.  
  14. PROCEDURE ErrorMessage    (ErrorCode, ErrorClass: CARDINAL; Position: tPosition);
  15.    BEGIN
  16.       WriteHead    (Position, ErrorClass);
  17.       WriteCode    (ErrorCode);
  18.       WriteTail    (ErrorClass);
  19.    END ErrorMessage;
  20.  
  21. PROCEDURE ErrorMessageI    (ErrorCode, ErrorClass: CARDINAL; Position: tPosition;
  22.              InfoClass: CARDINAL; Info: ADDRESS);
  23.    BEGIN
  24.       WriteHead    (Position, ErrorClass);
  25.       WriteCode    (ErrorCode);
  26.       WriteInfo    (InfoClass, Info);
  27.       WriteTail    (ErrorClass);
  28.    END ErrorMessageI;
  29.  
  30. PROCEDURE Message  (ErrorText: ARRAY OF CHAR; ErrorClass: CARDINAL; Position: tPosition);
  31.    BEGIN
  32.       WriteHead    (Position, ErrorClass);
  33.       WriteS    (StdError, ErrorText);
  34.       WriteTail    (ErrorClass);
  35.    END Message;
  36.  
  37. PROCEDURE MessageI (ErrorText: ARRAY OF CHAR; ErrorClass: CARDINAL; Position: tPosition;
  38.              InfoClass: CARDINAL; Info: ADDRESS);
  39.    BEGIN
  40.       WriteHead    (Position, ErrorClass);
  41.       WriteS    (StdError, ErrorText);
  42.       WriteInfo    (InfoClass, Info);
  43.       WriteTail    (ErrorClass);
  44.    END MessageI;
  45.  
  46. PROCEDURE WriteHead (Position: tPosition; ErrorClass: CARDINAL);
  47.    BEGIN
  48.       WritePosition (StdError, Position);
  49.       WriteS    (StdError, ": ");
  50.       CASE ErrorClass OF
  51.       |  Fatal        : WriteS (StdError, "Fatal       ");
  52.       |  Restriction    : WriteS (StdError, "Restriction ");
  53.       |  Error        : WriteS (StdError, "Error       ");
  54.       |  Warning    : WriteS (StdError, "Warning     ");
  55.       |  Repair        : WriteS (StdError, "Repair      ");
  56.       |  Note        : WriteS (StdError, "Note        ");
  57.       |  Information    : WriteS (StdError, "Information ");
  58.       ELSE WriteS (StdError, "Error class: "); WriteI (StdError, ErrorClass, 0);
  59.       END;
  60.    END WriteHead;
  61.  
  62. PROCEDURE WriteTail (ErrorClass: CARDINAL);
  63.    BEGIN
  64.       WriteNl (StdError);
  65.       IF ErrorClass = Fatal THEN Exit; END;
  66.    END WriteTail;
  67.  
  68. PROCEDURE WriteCode (ErrorCode: CARDINAL);
  69.    BEGIN
  70.       CASE ErrorCode OF
  71.       |  NoText         :
  72.       |  SyntaxError     : WriteS (StdError, "syntax error"        );
  73.       |  ExpectedTokens     : WriteS (StdError, "expected tokens"        );
  74.       |  RestartPoint     : WriteS (StdError, "restart point"        );
  75.       |  TokenInserted     : WriteS (StdError, "token inserted "        );
  76.       |  WrongParseTable : WriteS (StdError, "parse table mismatch"    );
  77.       |  OpenParseTable     : WriteS (StdError, "cannot open parse table"    );
  78.       |  ReadParseTable     : WriteS (StdError, "cannot read parse table"    );
  79.       ELSE WriteS (StdError, " error code: "); WriteI (StdError, ErrorCode, 0);
  80.       END;
  81.    END WriteCode;
  82.  
  83. PROCEDURE WriteInfo    (InfoClass: CARDINAL; Info: ADDRESS);
  84.    VAR
  85.       PtrToInteger    : POINTER TO INTEGER;
  86.       PtrToShort    : POINTER TO SHORTCARD;
  87.       PtrToLong        : POINTER TO LONGINT;
  88.       PtrToReal        : POINTER TO REAL;
  89.       PtrToBoolean    : POINTER TO BOOLEAN;
  90.       PtrToCharacter    : POINTER TO CHAR;
  91.       PtrToString    : POINTER TO Strings.tString;
  92.       PtrToArray    : POINTER TO ARRAY [0..1023] OF CHAR;
  93.       PtrToIdent    : POINTER TO tIdent;
  94.    BEGIN
  95.       WriteS (StdError, ": ");
  96.       CASE InfoClass OF
  97.       | Integer    : PtrToInteger    := Info; WriteI (StdError, PtrToInteger^, 0);
  98.       | Short      : PtrToShort    := Info; WriteI (StdError, PtrToShort^, 0);
  99.       | Long       : PtrToLong    := Info; WriteI (StdError, PtrToLong^, 0);
  100.       | Real       : PtrToReal    := Info; WriteR (StdError, PtrToReal^, 1, 10, 1);
  101.       | Boolean    : PtrToBoolean    := Info; WriteB (StdError, PtrToBoolean^);
  102.       | Character:PtrToCharacter:= Info; WriteC (StdError, PtrToCharacter^);
  103.       | String    : PtrToString    := Info; Strings.WriteS (StdError, PtrToString^);
  104.       | Array    : PtrToArray    := Info; WriteS (StdError, PtrToArray^);
  105.       | Ident    : PtrToIdent    := Info; WriteIdent (StdError, PtrToIdent^);
  106.       ELSE
  107.       END;
  108.    END WriteInfo;
  109.  
  110. PROCEDURE yyExit;
  111.    BEGIN
  112.       CloseIO; System.Exit (1);
  113.    END yyExit;
  114.  
  115. BEGIN
  116.    Exit := yyExit;
  117. END Errors.
  118.